The present invention relates to spread spectrum systems, and more particularly, to methods and apparatuses for generating OVSF (orthogonal variable spreading factor) codes.
In spread spectrum systems, such as CDMA-2000 or UMTS (universal mobile telephone system), OVSF code is usually employed as the spreading code for use in both the spreading operations at the transmitter end and the de-spreading operations at the receiver end. The OVSF codes ensure orthogonality between different data channels in a multi-code transmission. The length of the OVSF code is called the spreading factor (SF). In different transmissions, different spreading factors may be adopted to accomplish the multi-rate transmission.
Please refer to FIG. 1, which shows a simplified structure of a conventional OVSF code tree 100. In FIG. 1, CSF,x denotes the OVSF code with a spreading factor SF=2k, where x is the code index of the OVSF code and k is the layer number. In other words, CSF,x is the x-th OVSF code in the layer k where x=0, 1˜SF−1. The mother codes of a specific OVSF code are the lower layer codes on the path from the specific OVSF code to the root code C1,0, and the descendent codes are those produced from the specific OVSF code. For example, the mother codes of the OVSF code C8,4 are codes C4,2, C2,1 and C1,0, and the descendent codes of the OVSF code C4,3 are codes C8,6, C8,7 and their descendent codes.
Any two OVSF codes at the same layer are orthogonal and any two OVSF codes at different layers are orthogonal except for the case that one of them is the mother code or the descendent code of another one. Two OVSF codes with different spreading factors are therefore not orthogonal when they are on the same branch of the code tree. When a specific OVSF code is assigned, its mother codes and descendent codes cannot be assigned in the same channel since they are not orthogonal to each other.
The OVSF codes are conventionally generated recursively from the code tree 100 as shown in FIG. 1. According to the related art, each of the OVSF codes in the code tree 100 must be held in a memory. This means that a memory of considerable capacity is required in order to hold all of the OVSF codes. In view of the foregoing, an efficient method for generating the required OVSF codes instead of maintaining the whole code tree in the memory is needed.